﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Controller; // Brug vores class library "Controller"
using Interfaces; // Brug vores class library "Interfaces"

namespace Sorts_F1
{
    public partial class FrmVisMinProfil : Form
    {
        // Attributter
        ClsSystemController systemController;
        List<IClsPostBy> tempPostListe;

        public FrmVisMinProfil(ClsSystemController systemController) // Modtager controlleren fra start formen
        {
            InitializeComponent();
            this.systemController = systemController; // Istedet for at instansiere en ny controller bruger vi den der bliver sendt med
            this.MinimumSize = this.MaximumSize = this.Size; // Sørg for at formen altid er den nuværende størrelse
        }

        private void FrmVisMinProfil_Load(object sender, EventArgs e)
        {
            MidlertidigPostBy(); // brug metoden skrevet på denne side

            // Indlæser informationer fra det aktuelle medlemsinterfaceobjekt.
            txtNavn.Text = systemController.AktueltMedlem.Navn;
            txtAdresse.Text = systemController.AktueltMedlem.Adresse;
            txtPostNr.Text = systemController.AktueltMedlem.PostNummer.ToString();
            txtBy.Text = systemController.AktueltMedlem.By;
            txtEmail.Text = systemController.AktueltMedlem.Mail;
        }

        private void btnTilbage_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        // Laver en midlertidig liste til at indeholde postnumre og bynavne. Disse postnumre og bynavnes downloades herefter til listen.
        // Dette gøres for senere, at kunne tjekke hvorvidt et postnummer/bynavn allerede eksisterer i databasen
        public void MidlertidigPostBy()
        {
            tempPostListe = new List<IClsPostBy>();

            foreach (var item in systemController.VisPostBy()) 
            {
                tempPostListe.Add(item);
            }
        }

        private void btnGemRedigering_Click(object sender, EventArgs e)
        {
            try
            {
                string navn = txtNavn.Text;
                string adresse = txtAdresse.Text;
                int postNr = int.Parse(txtPostNr.Text);
                string EMail = txtEmail.Text;
                string by = txtBy.Text;

                // Variable, bliver brugt til at holde styr på om postnummeret ligger på databasen i forvejen.
                bool controll = false;

                // Løber listen med postnumre igennem og ændre variablens tilstand, hvis postnummeret eksisterer. 
                foreach (var item in tempPostListe)
                {
                    if (item.Postnr == postNr)
                    {
                        controll = true;
                    }

                }

                // Hvis postrnummeret ikke eksitserer, opretter den et nyt postnummer og tilføjer Medlemmet, i databasen
                if (controll == false)
                {
                    systemController.RedigerMedlemIDBNytPostnummer(systemController.AktueltMedlem.MedlemsNummer, navn, EMail, adresse, postNr, systemController.AktueltMedlem.Betalt, by);
                    MessageBox.Show("Ændringer er registreret");
                }

                // Hvis postnummeret eksisterer i databasen, bliver medlemmets postnummer ændret istedet for oprettet.. 
                else
                {
                    systemController.RedigerMedlemIDBGammeltPostnummer(systemController.AktueltMedlem.MedlemsNummer, navn, EMail, adresse, postNr, systemController.AktueltMedlem.Betalt);
                    MessageBox.Show("Ændringer er registreret");
                }

                systemController.OpdaterMedlemFraDB();
                systemController.OpdaterAktueltMedlem(systemController.AktueltMedlem.MedlemsNummer);
            }

            catch
            {
                MessageBox.Show("Fejl opstået");
            }
        }
    }
}
